{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 基线模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "import seaborn as sb\n",
    "from sklearn.metrics import roc_auc_score, plot_roc_curve, classification_report\n",
    "from matplotlib import pyplot as plt\n",
    "from yellowbrick.classifier.rocauc import roc_auc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = pd.read_csv('datasets/X.csv', index_col='id')\n",
    "X_t = pd.read_csv('datasets/X_t.csv', index_col='id')\n",
    "y = pd.read_csv('datasets/y.csv', index_col='id')\n",
    "y_t = pd.read_csv('datasets/y_t.csv', index_col='id')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 3 folds for each of 12 candidates, totalling 36 fits\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END .............C=0.01, l1_ratio=0, penalty=elasticnet; total time=  39.6s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END .............C=0.01, l1_ratio=0, penalty=elasticnet; total time=  38.5s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END .............C=0.01, l1_ratio=0, penalty=elasticnet; total time=  39.1s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ...........C=0.01, l1_ratio=0.3, penalty=elasticnet; total time=  58.7s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ...........C=0.01, l1_ratio=0.3, penalty=elasticnet; total time= 1.0min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ...........C=0.01, l1_ratio=0.3, penalty=elasticnet; total time= 1.0min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ...........C=0.01, l1_ratio=0.6, penalty=elasticnet; total time=  59.3s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ...........C=0.01, l1_ratio=0.6, penalty=elasticnet; total time= 1.0min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ...........C=0.01, l1_ratio=0.6, penalty=elasticnet; total time=  59.3s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ...........C=0.01, l1_ratio=0.9, penalty=elasticnet; total time=  57.7s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ...........C=0.01, l1_ratio=0.9, penalty=elasticnet; total time= 1.0min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ...........C=0.01, l1_ratio=0.9, penalty=elasticnet; total time=  58.6s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ................C=1, l1_ratio=0, penalty=elasticnet; total time=  39.3s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ................C=1, l1_ratio=0, penalty=elasticnet; total time=  39.9s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ................C=1, l1_ratio=0, penalty=elasticnet; total time=  39.4s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..............C=1, l1_ratio=0.3, penalty=elasticnet; total time= 1.0min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..............C=1, l1_ratio=0.3, penalty=elasticnet; total time= 1.1min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..............C=1, l1_ratio=0.3, penalty=elasticnet; total time= 1.1min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..............C=1, l1_ratio=0.6, penalty=elasticnet; total time= 1.1min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..............C=1, l1_ratio=0.6, penalty=elasticnet; total time= 1.1min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..............C=1, l1_ratio=0.6, penalty=elasticnet; total time= 1.1min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..............C=1, l1_ratio=0.9, penalty=elasticnet; total time= 1.1min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..............C=1, l1_ratio=0.9, penalty=elasticnet; total time= 1.0min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..............C=1, l1_ratio=0.9, penalty=elasticnet; total time= 1.1min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ............C=100.0, l1_ratio=0, penalty=elasticnet; total time=  38.7s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ............C=100.0, l1_ratio=0, penalty=elasticnet; total time=  38.8s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ............C=100.0, l1_ratio=0, penalty=elasticnet; total time=  38.8s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..........C=100.0, l1_ratio=0.3, penalty=elasticnet; total time= 1.1min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..........C=100.0, l1_ratio=0.3, penalty=elasticnet; total time= 1.1min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..........C=100.0, l1_ratio=0.3, penalty=elasticnet; total time= 1.1min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..........C=100.0, l1_ratio=0.6, penalty=elasticnet; total time= 1.1min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..........C=100.0, l1_ratio=0.6, penalty=elasticnet; total time= 1.1min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..........C=100.0, l1_ratio=0.6, penalty=elasticnet; total time= 1.1min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..........C=100.0, l1_ratio=0.9, penalty=elasticnet; total time= 1.1min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..........C=100.0, l1_ratio=0.9, penalty=elasticnet; total time= 1.0min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[CV] END ..........C=100.0, l1_ratio=0.9, penalty=elasticnet; total time= 1.1min\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=3, estimator=LogisticRegression(solver='saga'),\n",
       "             param_grid={'C': [0.01, 1, 100.0], 'l1_ratio': [0, 0.3, 0.6, 0.9],\n",
       "                         'penalty': ['elasticnet']},\n",
       "             verbose=2)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m = GridSearchCV(\n",
    "    LogisticRegression(solver='saga'),\n",
    "    cv=3,\n",
    "    verbose=2,\n",
    "    param_grid={\n",
    "        \"penalty\": ['elasticnet'],\n",
    "        \"l1_ratio\": [0, 0.3, 0.6, 0.9],\n",
    "        \"C\": [1e-2, 1, 1e2]\n",
    "    }\n",
    ")\n",
    "m.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='param_l1_ratio', ylabel='param_C'>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "cv_result_df = pd.DataFrame(\n",
    "    m.cv_results_\n",
    ")\n",
    "cv_result_df\n",
    "sb.heatmap(cv_result_df.pivot(\"param_C\", \"param_l1_ratio\", \"mean_test_score\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\utils\\validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(*args, **kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\envs\\stats\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:329: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  \"the coef_ did not converge\", ConvergenceWarning)\n"
     ]
    }
   ],
   "source": [
    "base_model_m = LogisticRegression(penalty=\"elasticnet\", C=1, l1_ratio=0.3, solver=\"saga\").fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7245438988157511"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_auc_score(y_t, base_model_m.decision_function(X_t))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_roc_curve(base_model_m, X_t, y_t)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 576x396 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:title={'center':'ROC Curves for LogisticRegression'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "visualizer = roc_auc(base_model_m, X, y, classes=[0, 1])\n",
    "visualizer.score(X_t, y_t)\n",
    "visualizer.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.69      0.68      0.68     59612\n",
      "           1       0.69      0.70      0.69     60388\n",
      "\n",
      "    accuracy                           0.69    120000\n",
      "   macro avg       0.69      0.69      0.69    120000\n",
      "weighted avg       0.69      0.69      0.69    120000\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(y_t, base_model_m.predict(X_t)))"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "81ee8574ca4b949f1a68324cabe052a24810371303122f0dfbc70cb842d7a9dc"
  },
  "kernelspec": {
   "display_name": "Python 3.7.4 64-bit ('stats': conda)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
